cobar实现mysql分库分表

        cobar 编译安装配置笔记:https://github.com/alibaba/cobar

        windows下使用eclipse导入cobar项目,eclipse File -> Import -> Git :https://github.com/alibaba/cobar

        linux下:

1
wget https://codeload.github.com/alibaba/cobar/zip/master

F:\mycat>mvn compile
F:\mycat>mvn package

        生成压缩包cobar-server-1.2.7.tar.gz,放到linux环境中解压出来,没有logs目录,新建并运行查看目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@XAYQ-Test3 ~]# tree /opt/cobar-server
/opt/software/cobar-server
├── bin
│ ├── restart.sh
│ ├── shutdown.sh
│ ├── startup.bat
│ └── startup.sh
├── conf
│ ├── log4j.xml #日志配置文件,不需要修改
│ ├── rule.xml #mysql路由规则
│ ├── schema.xml #
│ └── server.xml #
├── lib
│ ├── cobar-server-1.2.7.jar
│ └── log4j-1.2.17.jar
└── logs
├── alarm.log
├── console.log
├── heartbeat.log
├── stdout.log
└── stdout.log.2014-07-10

        1.主要修改以下几个文件:rule.xml

        

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<tableRule name="rule1">
<rule>
<columns>id</columns>
<algorithm><![CDATA[ func1(${id}) ]]></algorithm>
</rule>
</tableRule>
<!-- 路由函数定义 -->
<function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong">
<property name="partitionCount">2</property>
<property name="partitionLength">512</property>
</function>
```
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.schema.xml ,定义数据节点
```bash
<cobar:schema xmlns:cobar="http://cobar.alibaba.com/">
<!-- schema定义 -->
<schema name="cppdb" dataNode="cppDb1">
<table name="tb2" dataNode="cppDb2,cppDb3" rule="rule1" />
</schema>
<!-- 数据节点定义,数据节点由数据源和其他一些参数组织而成。-->
<dataNode name="cppDb1">
<property name="dataSource">
<dataSourceRef>cppDataSource[0]</dataSourceRef>
</property>
</dataNode>
<dataNode name="cppDb2">
<property name="dataSource">
<dataSourceRef>cppDataSource[1]</dataSourceRef>
</property>
</dataNode>
<dataNode name="cppDb3">
<property name="dataSource">
<dataSourceRef>cppDataSource[2]</dataSourceRef>
</property>
</dataNode>
<!-- 数据源定义,数据源是一个具体的后端数据连接的表示。-->
<dataSource name="cppDataSource" type="mysql">
<property name="location">
<location>172.22.14.7:3306/cpp1</location>
<location>172.22.14.7:3306/cpp2</location>
<location>172.22.14.7:3306/cpp3</location>
</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="sqlMode">STRICT_TRANS_TABLES</property>
</dataSource>
</cobar:schema>

        3.server.xml,定义cobar对外统一的数据接口。

1
2
3
4
5
6
7
<!-- 用户访问定义,用户名、密码、schema等信息。 -->
<user name="root">
<property name="password">root</property>
<property name="schemas">cppdb</property>
t;/user>